Im letztem Tutorial habe ich Ihnen beigebracht, wie man Dreiecke und Quadrate auf dem Bildschirm anzeigt. In diesem Tutorial werde ich Ihnen beibringen, wie man das Dreieck und das Quadrat auf zwei verschiedene Arten färben kann. Flat Coloring füllt das Quadrat mit einer Farbe. Smooth Coloring blendet die 3 Farben, die an jedem Punkt (Vertex) des Dreiecks angegeben sind, ineinander über, so dass eine nette Vermischung der Farben entsteht.
Wir benutzen den Code aus dem letzten Tutorial und erweitern die DrawGLScene Prozedur. Ich werde folgend nochmal die komplette Prozedur aufschreiben, so dass Sie, wenn Sie den Code der letzten Lektion verändern wollen, die DrawGLScene Prozedur mit dem folgenden Code ersetzen können oder einfach den fehlenden Code hinzufügen, der im letzten Tutorial noch nicht enthalten war.
int DrawGLScene(GLvoid) // Hier kommt der ganze Zeichnen-Kram hin
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Löscht den Bildschirm und den Depth-Buffer
glLoadIdentity(); // Resettet die aktuelle Modelview Matrix
glTranslatef(-1.5f,0.0f,-6.0f); // Links 1.5 dann 6 Einheiten in den Bildschirm hinein
glBegin(GL_TRIANGLES); // Fange an, Dreiecke zu zeichnen
glColor3f(1.0f,0.0f,0.0f); // Setzt die Farbe auf Rot glVertex3f( 0.0f, 1.0f, 0.0f); // Eine Einheit aus dem Zentrum nach oben (Oberste Punkt)
glColor3f(0.0f,1.0f,0.0f); // Setzt die Farbe auf Grün glVertex3f(-1.0f,-1.0f, 0.0f); // Eine Einheit nach links und unten (unten links)
glColor3f(0.0f,0.0f,1.0f); // Setzt die Farbe auf Blau glVertex3f( 1.0f,-1.0f, 0.0f); // Eine Einheit nach rechts und unten (unten rechts) glEnd(); // Fertig mit dem Zeichnen von Dreiecken glTranslatef(3.0f,0.0f,0.0f); // Vom rechten Punkt 3 Einheiten nach rechts bewegen
glColor3f(0.5f,0.5f,1.0f); // Setzt die Farbe auf Blau glBegin(GL_QUADS); // Fange an Quadrate zu zeichnen glVertex3f(-1.0f, 1.0f, 0.0f); // links und eine Einheit nach oben (oben links) glVertex3f( 1.0f, 1.0f, 0.0f); // rechts und eine Einheit nach oben (oben rechts) glVertex3f( 1.0f,-1.0f, 0.0f); // rechts und eine Einheit runter (unten rechts) glVertex3f(-1.0f,-1.0f, 0.0f); // links und eine Einheit nach unten (unten links) glEnd(); // Fertig mit Quadraten zeichnen return TRUE; // Weiter machen }
if (keys[VK_F1]) // Wurde F1 gedrückt?
{
keys[VK_F1]=FALSE; // Wenn ja, setze Taste auf FALSE
KillGLWindow(); // Kill unser aktuelles Fenster
fullscreen=!fullscreen; // Wechsel zwischen Fullscreen und Fester-Modus
// Erzeuge unser OpenGL-Fenster neu ( Modifiziert )
if (!CreateGLWindow("NeHe's Color Tutorial",640,480,16,fullscreen))
{
return 0; // Beenden, wenn das Fenster nicht erzeugt wurde
}
}
In diesem Tutorial habe ich versucht so detailiert wie möglich zu beschreiben, wie Sie Ihre OpenGL Polygone mittels Flat- und Smooth-Coloring färben können. Spielen Sie ein wenig mit dem Code herum, versuchen Sie die Rot, Grün und Blau Werte durch andere Zahlen zu ersetzen. Schauen Sie, welche Farben dabei herauskommen. Wenn Sie Kommentare oder Fragen haben, schreiben Sie mir bitte eine E-Mail. Wenn Sie denken, ich habe etwas unkorrekt kommentiert, oder das der Code irgendwo besser gemacht werden könnte, lassen Sie mich es bitte wissen. Ich möchte das beste OpenGL-Tutorial machen. Ich bin an Ihrem Feedback interessiert.